#include "edge.h"
#include "Define.h"
#include <QPainter>

Edge::Edge()// 创建边缘循环移动动画
{
    m_anim.setTargetObject(this);
    m_anim.setPropertyName("pos");
    connect(&m_anim,SIGNAL(finished()),this,SLOT(BeginMove()));//信号连接
}
QRectF Edge::boundingRect() const
{
    return  EDGE_BOUNDING;// 返回边缘图像矩形边界
}

void Edge::paint( QPainter* pPainter,
                        const QStyleOptionGraphicsItem* pOption,
                        QWidget* pWidget )
{
    Q_UNUSED(pOption);
    Q_UNUSED(pWidget);
    QPixmap src(":/edge.png"); // 加载边缘图像
    for(int i=0;i<EDGE_RE;i++)
    {// 绘制多个边缘图像，实现无缝循环滚动效果
        pPainter->drawPixmap(i*src.width()-400,-12.5,src.width(),src.height(),src);
    }

}

void Edge::BeginMove()// 开始移动
{
    static int i = 0;// 静态变量用来记录移动次数，初始值为0
    if(i==0||i==1)// 当移动次数为0或1时，记录初始位置
    {
    lastPos = this->pos(); // 记录当前边的位置
    i++;
    }else// 当移动次数大于1时
    {
        setPos(lastPos);// 将边的位置设为初始位置
    }
    m_anim.setDuration(EDGE_BOUNDING.width()/2/SPEED*1000);// 设置边的移动动画的时长
    m_anim.setStartValue(this->pos());// 设置移动动画的起始点为当前边的位置
    m_anim.setEndValue(this->pos()+QPoint(-1*EDGE_BOUNDING.width()/2,0));// 设置移动动画的结束点为当前位置的左侧半个框的位置
    m_anim.start();// 启动移动的动画
}

